cmake_minimum_required(VERSION 3.25)

# ------ SheriffOS ------
project(os)
# ---- 作为 接口库
add_library(${PROJECT_NAME} INTERFACE)

# ------ 库源文件 ------
file(GLOB_RECURSE source CONFIGURE_DEPENDS
        src/*.c src/*.cpp include/*.h include/*.hpp
)
target_sources(${PROJECT_NAME} INTERFACE ${source})
# ------ 库头文件目录 ------
target_include_directories(${PROJECT_NAME} INTERFACE
        include
)
# ------ 其他依赖 ------
# ---- UNITS 单位系统
add_subdirectory(third/units)
target_link_libraries(${PROJECT_NAME} INTERFACE units)

target_compile_definitions(units INTERFACE -DUNIT_LIB_DEFAULT_TYPE=float)
#注1：单位库默认使用float类型，方便在板通中使用（直接替代float） 但需要注意使用units后，__attribute__((packed))会失效 by陈志鸿
#注2: units库中预先定义了一些物理常数，将底层类型改为float后
#     Stefan-Boltzmann常数超出了编译器对常量表达式计算能力的限制（计算时使用阿伏伽德罗常数进行幂运算）
#     鉴于几乎不会用到它，便直接在代码中注释掉了 by陈志鸿


# ---- etl
add_definitions(
        -DETL_CHECK_PUSH_POP
)
add_subdirectory(third/etl)
target_link_libraries(${PROJECT_NAME} INTERFACE etl)

# ---- 依赖于 具体bsp
target_link_libraries(${PROJECT_NAME} INTERFACE bsp)

# ---- 禁用部分警告
target_compile_options(${PROJECT_NAME} INTERFACE -Wno-unused-function -Wno-unused-variable)
